package com.liunian.duplication2.listnode;

public class SwapPairs24 extends ListNode {

    /**
     给你一个链表，两两交换其中相邻的节点，并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题（即，只能进行节点交换）。

     示例 1：
     输入：head = [1,2,3,4]
     输出：[2,1,4,3]

     示例 2：
     输入：head = []
     输出：[]

     示例 3：
     输入：head = [1]
     输出：[1]
     */
    public ListNode swapPairs(ListNode head) {
        ListNode dumyNode = new ListNode(-1, head);
        ListNode pre = dumyNode;
        while (pre.next != null && pre.next.next != null) {
            ListNode record = pre.next.next.next;
            ListNode temp = pre.next;
            pre.next = pre.next.next;
            pre.next.next = temp;
            pre.next.next.next = record;
            pre = pre.next.next;
        }
        return dumyNode.next;
    }

}
